<?php

class Rettighed_model extends CI_Model {

	/*
	 * 
	 */
	function afgoer_ingame_type($id){
		switch($id){
			case "-2":
				$ingame_type = "tilskuer"; // Ikke muligt endnu.
				break;
			case "-1":
				$ingame_type = "sideadmin";
				break;
			case "0":
				$ingame_type = "gm";
				break;
			default:
				$ingame_type = "deltager";
				break;				
		}
		return $ingame_type;
	}

	/*
	* jSonRettigheder()	Laver et jSon-array med en oversigt over de rettigheder som pågældende deltager har med pågældende blik.
	* 
	*/
	function jSonRettigheder($ingame_id,$kampagne_id){
		$deltager = $this->session->userdata("deltager");
		$deltager_id = $deltager["userid"];
		
		$ingame_type = $this->rettighed_model->afgoer_ingame_type($ingame_id);
		
		if(!file_exists('./data/user_doc/rettighed/'.$deltager_id)) {
			mkdir('./data/user_doc/rettighed/'.$deltager_id, 0777, true);
		}
		
		switch($ingame_type){
			case "tilskuer":
				$redEle = array();
				$redBes = array();
				$seEle = $this->offentligeElementer();
				$seBes = $this->offentligeBeskrivelser();
				break; 
			case "deltager":
				$redEle = array_merge(
					$this->findPCer($deltager_id),
					$this->forfatterElementer($deltager_id),
					$this->adminElementer($deltager_id)
				);
				$redBes = array_merge(
					$this->forfatterBeskrivelser($deltager_id)
				);
				$seEle = array_merge(
					$this->offentligeElementer(),				
					$this->deltmedElementer($ingame_id),
					$this->findPCer($deltager_id),
					$this->forfatterElementer($deltager_id),
					$this->adminElementer($deltager_id)
				);
				$seBes = array_merge(
					$this->offentligeBeskrivelser(),
					$this->deltmedBeskrivelser($ingame_id),
					$this->forfatterBeskrivelser($deltager_id)
				);
				break;
			case "gm":
				$redEle = array_merge(
					$this->findPCer($deltager_id),
					$this->forfatterElementer($deltager_id),
					$this->adminElementer($deltager_id),
					$this->kampagneElementer($kampagne_id)
				);
				$redBes = array_merge(
					$this->forfatterBeskrivelser($deltager_id),
					$this->kampagneBeskrivelser($kampagne_id)
				);
				$seEle = array_merge(
					$this->offentligeElementer(),				
					$this->findPCer($deltager_id),
					$this->forfatterElementer($deltager_id),
					$this->adminElementer($deltager_id)
				);
				$seBes = array_merge(
					$this->offentligeBeskrivelser(),
					$this->forfatterBeskrivelser($deltager_id),
					$this->kampagneBeskrivelserNaevnt($kampagne_id)
				);
			case "sideadmin":
				$redEle = $this->alleElementer();
				$redBes = $this->alleBeskrivelser();
				$seEle = $this->alleElementer();
				$seBes = $this->alleBeskrivelser();
			echo "hej";
		}
		$this->load->helper('file');
				
		if(!write_file('./data/user_doc/rettighed/'.$deltager_id.'/se_elementer.json',json_encode($seEle)))
		{
			echo "Fejl: se_elementer JSON array bliver ikke dannet i rettighed_model!";
		}
		if(!write_file('./data/user_doc/rettighed/'.$deltager_id.'/se_beskrivelser.json',json_encode($seBes)))
		{
			echo "Fejl: se_beskrivelser JSON array bliver ikke dannet i rettighed_model!";
		}
		if(!write_file('./data/user_doc/rettighed/'.$deltager_id.'/red_elementer.json',json_encode($redEle)))
		{
			echo "Fejl: red_elementer JSON array bliver ikke dannet i rettighed_model!";
		}
		if(!write_file('./data/user_doc/rettighed/'.$deltager_id.'/red_beskrivelser.json',json_encode($redBes)))
		{
			echo "Fejl: red_beskrivelser JSON array bliver ikke dannet i rettighed_model!";
		}

		
	}

	function alleElementer(){
		$query = $this->db->query("
			SELECT id
			FROM element
		");
		$ele = array();
		foreach($query->result() as $r){
			$ele[] = $r->id;
		}
		return $ele;	
	}

	function alleBeskrivelser(){
		$query = $this->db->query("
			SELECT id
			FROM beskrivelse
		");
		$bes = array();
		foreach($query->result() as $r){
			$bes[] = $r->id;
		}
		return $bes;	
	}

	function kampagneBeskrivelserNaevnt($kampagne_id){
		$query = $this->db->query("
			SELECT id_beskrivelse
			FROM element_beskrivelse
			WHERE id_element IN(
				SELECT id_element
				FROM element_kampagne
				WHERE id_kampagne = ".$kampagne_id."
			)
		");
		$bes = array();
		foreach($query->result() as $r){
			$bes[] = $r->id_beskrivelse;
		}
		return $bes;			
	}

	function kampagneBeskrivelser($kampagne_id){
		$query = $this->db->query("
			SELECT id_beskrivelse
			FROM beskrivelse_kampagne
			WHERE id_kampagne = ".$kampagne_id."
		");
		$bes = array();
		foreach($query->result() as $r){
			$bes[] = $r->id_beskrivelse;
		}
		return $bes;	
	}

	function kampagneElementer($kampagne_id){
		$query = $this->db->query("
			SELECT id_element
			FROM element_kampagne
			WHERE id_kampagne = ".$kampagne_id."
		");
		$ele = array();
		foreach($query->result() as $r){
			$ele[] = $r->id_element;
		}
		return $ele;	
	}

	function forfatterBeskrivelser($deltager_id){
		$query = $this->db->query("
			SELECT id
			FROM beskrivelse
			WHERE id_deltager = ".$deltager_id."
		");
		$bes = array();
		foreach($query->result() as $r){
			$bes[] = $r->id;
		}
		return $bes;	
	}

	function adminElementer($deltager_id){
		$query = $this->db->query("
			SELECT id_element
			FROM admin_element
			WHERE id_deltager = ".$deltager_id."
		");
		$ele = array();
		foreach($query->result() as $r){
			$ele[] = $r->id_element;
		}
		return $ele;	
	}

	function forfatterElementer($deltager_id){
		$query = $this->db->query("
			SELECT id
			FROM element
			WHERE forfatter = ".$deltager_id."
		");
		$ele = array();
		foreach($query->result() as $r){
			$ele[] = $r->id;
		}
		return $ele;		
	}

	function findPCer($deltager_id){	
		$query = $this->db->query("
			SELECT id
			FROM player_character
			WHERE id_deltager = ".$deltager_id."
		");
		$ele = array();
		foreach($query->result() as $r){
			$ele[] = $r->id;
		}
		return $ele;		
	}

	function deltmedBeskrivelser($id){
		$query = $this->db->query("
			SELECT id_beskrivelse
			FROM deling_beskrivelse
			WHERE id_entitet = ".$id."
		");
		$bes = array();
		foreach($query->result() as $r){
			$bes[] = $r->id_beskrivelse;
		}
		return $bes;
	}

	function deltmedElementer($id){
		$query = $this->db->query("
			SELECT id_element
			FROM deling_element
			WHERE id_entitet = ".$id."
		");
		$ele = array();
		foreach($query->result() as $r){
			$ele[] = $r->id_element;
		}
		return $ele;
	}

	function offentligeElementer(){
		$query = $this->db->query("
			SELECT id
			FROM element
			WHERE hemmelig = 1
		"); 
		$ele = array();
		foreach($query->result() as $r){
			$ele[] = $r->id;
		}
		return $ele;
	}
	
	function offentligeBeskrivelser(){
		$query = $this->db->query("
			SELECT id
			FROM beskrivelse
			WHERE hemmelig = 1
		"); // Finder offentlige beskrivelser;
		$bes = array();
		foreach($query->result() as $s){
			$bes[] = $s->id;
		}
		return $bes;
	}
	

	function list_pcer() 
	{
		$query = $this->db->query
		(
			"SELECT entitet.id, navne_entitet.navn 
			FROM entitet, navne_entitet 
			WHERE entitet.pc=1 AND navne_entitet.id_entitet=entitet.id");

		$pcer = array();


		foreach($query->result() as $rows) 
		{
			
			$this->alle_pcer[] = 
				array(
					'pc_id' => $rows->id,
					'pc_navn' => $rows->navn

				);


		}

	}
	
	function list_deltagere(){ //finder samtlige deltagere
		$query = $this->db->query("
			SELECT id, rollespiller_navn as fornavn, rollespiller_efternavn as efternavn, username, aktiv
			FROM deltager
		");
		$deltagere = array();
		foreach($query->result() as $row){
			$deltagere[] = array(
				'id' => $row->id,
				'fornavn' => $row->fornavn,
				'efternavn' => $row->efternavn,
				'username' => $row->username,
				'aktiv' => $row->aktiv
			);
		}
		return $deltagere;
	}

	

// +++++++++++++++++++ ATT: LIGGER OGSÅ model/entitet/vis | FINDER UD AF, HVILKE BESKRIVELSER BRUGEREN MÅ SE ++++++++++++++++++++++++

	function beskrivelser_jegmaase($entitet_id, $deltager_id)
	{
		//echo "modellen siger: 'entitet_id' er ".$entitet_id."<br>";
		//OFFENTLIGE BESKRIVELSER
		$query = $this->db->query
		('
			SELECT id
			FROM beskrivelse
			WHERE hemmelig = 1
		');
		//BESKRIVELSER DER ER BLEVET DELT MED MIG
		$query2 = $this->db->query
		('
			SELECT beskrivelse_id as id
			FROM beskrivelse_deling
			WHERE entitet_id = '.$entitet_id.'
		');	
		//BESKRIVELSER JEG HAR FORFATTET
		$query3 = $this->db->query
		('
			SELECT id
			FROM beskrivelse
			WHERE hemmelig=3
			AND deltager = '.$deltager_id.'
		');			
		
		$beskrivelser_jegmaase = array();
		
		foreach ($query->result() as $row)
		{ 
		   	$beskrivelser_jegmaase[] = $row->id;
		}
		
		foreach ($query2->result() as $row)
		{ 
		   	$beskrivelser_jegmaase[] = $row->id;
		}				
		foreach ($query3->result() as $row)
		{ 
		   	$beskrivelser_jegmaase[] = $row->id;
		}	
		
		return $beskrivelser_jegmaase;
	}
	
	function demaase_beskrivelsen($id_beskrivelse) //henter information om de karakterer beskrivelsen er delt med (dog ikke forfatteren til beskrivelsen, ej heller gamemaster)
	{
		$demaase_beskrivelsen = array();
		$query = $this->db->query
		('
			SELECT entitet.id, navne_entitet.navn
			FROM entitet, navne_entitet, beskrivelse_deling
			WHERE entitet.id = navne_entitet.id_entitet
			AND beskrivelse_deling.beskrivelse_id = '.$id_beskrivelse.'
			AND entitet.id = beskrivelse_deling.entitet_id
		');
		
		foreach ($query->result() as $row)
		{
			$demaase_beskrivelsen[] = array
			(
				'id_delt' => $row->id,
				'navn_delt' => $row->navn
			);	
		}
		
		return $demaase_beskrivelsen;
	}

	/* returnerer for en bestemt type, navn og id på de entiteter / steder eller begivenheder som jeg er administrator for */
	function mine_rettigheder($type, $deltager_id) //returnerer navn og id
	{
		$query = $this->db->query
		('
			SELECT navne_'.$type.'.navn, navne_'.$type.'.id_'.$type.' as id
			FROM navne_'.$type.', '.$type.'_rettighed, '.$type.'
			WHERE navne_'.$type.'.id_'.$type.' = '.$type.'_rettighed.id_'.$type.'
			AND '.$type.'_rettighed.id_deltager = '.$deltager_id.'
			AND navne_'.$type.'.id_'.$type.' = '.$type.'.id
			AND '.$type.'.slettet = 0
			ORDER BY navne_'.$type.'.navn
		');	
		$mine_rettigheder = array();
		
		foreach ($query->result() as $row)
		{ 
		   	$mine_rettigheder[] = array
			(
				'id' => $row->id,
				'navn' => $row->navn
			);
		}
		return $mine_rettigheder;
	}

	/* returnerer for en bestemt type, id på de entiteter / steder eller begivenheder som jeg er administrator for */	
	function mine_rettigheder_ider($type, $deltager_id) 
	{
		$query = $this->db->query
		('
			SELECT navne_'.$type.'.id_'.$type.' as id
			FROM navne_'.$type.', '.$type.'_rettighed
			WHERE navne_'.$type.'.id_'.$type.' = '.$type.'_rettighed.id_'.$type.'
			AND '.$type.'_rettighed.id_deltager = '.$deltager_id.'
			ORDER BY navne_'.$type.'.navn
		');	
		$mine_rettigheder_ider = array();
		
		foreach ($query->result() as $row)
		{ 
		   	$mine_rettigheder_ider[] = $row->id;
		}
		return $mine_rettigheder_ider;
	}
	




} 



?>
